home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Misc / MUIbase / TODO.txt < prev    next >
Text File  |  2000-01-01  |  7KB  |  188 lines

  1. Here are some ideas I collected from emails of 
  2. beta testers and users of MUIbase.
  3.  
  4. * New attribute type: List for storing any kind of value (but mostly used
  5.   for storing a list of values).
  6.  
  7. * MBview program for viewing and editing MUIbase projects without
  8.   the ability to change the data structure or programs.
  9.  
  10. * Option to check string length for importing records.
  11.  
  12. * Spacier layout for edit labels on high res screens.
  13.  
  14. * shift/alt/ctrl for arrow left/right.
  15.  
  16. * Numeric button for integer fields.
  17.  
  18. * popup in panel bar which displays a list of all records of that table.
  19.   Selecting an item will display the record in the table form.  Using
  20.   drag n' drop the order of records can also be changed if there is
  21.   no order defined on the records. There will also be buttons for
  22.   creating, duplicating and deleting records.
  23.  
  24. * larger panel buttons for filter and arrow buttons.
  25.  
  26. * new flag in the New/Change attribute requester that disables
  27.   changing the project's number-of-changes value.
  28.  
  29. * more user friendly input of date and time values: automatic insertion
  30.   of dots, slashes, dashes and colons.
  31.  
  32. * suffix string for integer fields, e.g. for displaying a currency.
  33.  
  34. * transparent color for images.
  35.  
  36. * more sophisticated reference filters.
  37.  
  38. * search for in memo fields.
  39.  
  40. * search & replace.
  41.  
  42. * individual viewer button for a string with it's own action.
  43.  
  44. * different font attributes (bold, italic, ...) for the text editor.
  45.  
  46. * Display record trigger function
  47.  
  48. * Larger max number of characters for string attributes.
  49.  
  50. * Direct expressions for virtual attributes instead of function entries.
  51.  
  52. * (EVAL <str-expr>) for programming MUIbase.
  53.  
  54. * Image kind for virtual attributes.
  55.  
  56. * Memo kind for virtual attributes.
  57.  
  58. * Jump-to-key feature for virtual attributes of list kind.
  59.  
  60. * Improve display listview by adding arrows to each entry like ListTree does.
  61.  
  62. * Use keypad keys for special purposes.
  63.  
  64. * Progress indicator when ordering records.
  65.  
  66. * Load window button images at program start.
  67.  
  68. * Some kind of load/save of filters. Maybe in a "MUI-pulldown-menu".
  69.  
  70. *Prevent users from changing the structure of a database.
  71. [Planned are Password protection for project and structure].
  72.  
  73. * Select-from-where query optimization
  74.  
  75. The select-from-where query is currently not optimized. E.g. imagine the
  76. following situation: a relation called Person has about 1000 records and
  77. you want to run the following query:
  78.  
  79. SELECT a.Name, b.Name FROM Person a, Person b
  80. WHERE (AND (= a.Name "Steffen") (= b.Name "Mats"))
  81.  
  82. Don't try to find any sense in this query :-)
  83.  
  84. Now the query command builds the cross product of 1000 x 1000 records
  85. = 1 000 000 tuples to examine! This will take many hours.
  86. But if you examine the WHERE expression you see that
  87. (= a.Name "Steffen") only depends on records from Person a and
  88. (= b.Name "Mats") only depend on records from Person b, so
  89. you could first check the expression (= a.Name "Steffen")
  90. for all records of Person a and (= b.Name "Mats") for
  91. all records of Person b and then build the cross product.
  92. This way you only need to check 1000 + 1000 = 2000 tuples.
  93. Thus the running time has been improved from n² to 2n
  94. where n is the number of records of relation Person.
  95. I already have an idea how to optimize the select-from-where query
  96. for arbitrary WHERE expressions that consists of AND, OR and NOT expressions.
  97.  
  98. * Apply changes made to choice labels to all existing records.
  99.  
  100. * Mask/Display editor with Drag 'n Drop.
  101.  
  102. * New data type: Selection for selecting n items out of m items.
  103.  
  104. * Optional log file where all changes are written in ASCII to.
  105.  
  106. * Copy & Paste of several attributes.
  107.  
  108. * Hotlist for program output and query print requester.
  109.  
  110. * Indices.
  111.  
  112. * More features for preprocessor (Macros, conditional compilation)
  113.  
  114.  
  115. --- Ideas & suggestions which will have to wait ---
  116.  
  117. * Foreground colors for text objects.
  118.  
  119. Problem: MUI's current approach for setting the foreground color
  120. in Text objects is limited to only 8 pen numbers, and these pen
  121. numbers may refer to only a subset of 8 colors, e.g. on my system
  122. they refer to only 4 real colors.
  123.  
  124. * Special functions support
  125.   I  know that you would not build in special functions e.g. for
  126.   mathematical  functions  like arsinh() and so on. But for some
  127.   special databases this would be nice. Is there any possibility
  128.   to implement an interface for self written function libraries?
  129.   AREXX demonstrates this ability: with addlib() you can load in
  130.   an  AREXX  library  and  you  can  use  its  functions  like a
  131.   implemented function. What do you think about that?
  132.  
  133. I don't know how to implement this for now.  Maybe a C interface and
  134. a linkable object module would solve it.  However I would really prefer
  135. the ARexx solution (of course an improved one compared to AmigaBase).
  136. I am thinking about an (RX pattern ...) function that returns a string
  137. containing the result of the ARexx command.
  138.  
  139. An idea that could work is to use a shared library with a well
  140. defined interface.  The user provides the library, registers it
  141. by calling a MUIbase function, MUIbase calls an init function to
  142. know about all available functions of the library, and then the user
  143. can call functions from the library.
  144.  
  145. * How  about  this: Add a menu point to the context specific textfield
  146.   menu  which  pops  up a window with two lists of relations and their
  147.   attributes.  The  left list contains the relations and the right one
  148.   the  depending  attributes like the relations and attribute lists in
  149.   the  structure  editor. Selecting one attribute will insert the full
  150.   relation  path  into  the  textfield.  At  the  moment I must have a
  151.   photographic mind to remember the relations with their attributes.
  152.  
  153. I don't know how I can implement this with MUI 3.8. The editor menu
  154. is a context menu and in 3.8 context menus are limited to only
  155. one toplevel menu. I don't want to put all relation names in the
  156. toplevel menu. I could add a menu item "Insert attribute/relation name"
  157. to the toplevel menu and pop up a window with all relations and attributes.
  158. But this solution is not user friendly because context menus can't have
  159. shortcuts and you would have to use the mouse the whole time.
  160. I will wait how MUI will handle context menus in the future.
  161.  
  162. * Context menu for relations?
  163.  
  164. I will wait how context menus are implemented in MUI > 3.8.
  165.  
  166. * Use ListTree for the display list.
  167.  
  168. Currently ListTree does not support multi-selection. So adding
  169. a group object to the display list by multi-selecting some objects
  170. for being the childs of the new group and pressing the "Group"
  171. button will not be possible. I will wait until ListTree supports
  172. multi-selection.
  173.  
  174. --- Ideas I am not going to implement:
  175.  
  176. * Autosave
  177.  
  178. Reasons:
  179.  
  180.     o Saving from time to time is a very simple task.
  181.     o You can't remember the last time your computer autosaved your projects.
  182.     o The computer may save in an inconsistent state, e.g. imagine
  183.       you manage two bank accounts and would like to transfer
  184.       money from one account to the other.  If the autosave feature
  185.       saves your project after you made the transaction for one account
  186.       but not for the other one then you have saved an inconsistent
  187.       database project.
  188.